package avicit.bdp.dcs.common.service;

import avicit.bdp.common.utils.enums.JobType;
import avicit.bdp.dcs.common.dto.EnumDto;
import avicit.bdp.dcs.tools.enums.IotdbDataType;
import avicit.bdp.dcs.tools.enums.SyncStatus;
import avicit.bdp.dcs.tools.enums.TransferStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @金航数码科技有限责任公司
 * @作者：developer
 * @邮箱：developer@avic-digital.com
 * @创建时间： 2020-07-21 09:51
 * @类说明：通用实现类
 * @修改记录：
 */
@Service
public class CommonService {

    private static final Logger logger = LoggerFactory.getLogger(CommonService.class);

    /**
     * 获取job状态
     * @param jobType
     * @return
     * @throws Exception
     */
    public List<EnumDto> getJobStatus(Integer jobType) throws Exception{
        List<EnumDto> enumDtoList = new ArrayList<>();
        if(JobType.TRANSFER.getCode()==jobType){
            TransferStatus[] transferStatusArr = TransferStatus.values();
            for(TransferStatus transferStatus : transferStatusArr){
                EnumDto enumDto = new EnumDto();
                enumDto.setCode(transferStatus.getCode());
                enumDto.setName(transferStatus.getDescp());
                enumDtoList.add(enumDto);
            }
        }else if(JobType.SYNC.getCode()==jobType || JobType.SEMISTRUCTURE.getCode()==jobType
                || JobType.STREAM.getCode()==jobType){
            SyncStatus[] syncStatusArr = SyncStatus.values();
            for(SyncStatus syncStatus : syncStatusArr){
                EnumDto enumDto = new EnumDto();
                enumDto.setCode(syncStatus.getCode());
                enumDto.setName(syncStatus.getDescp());
                enumDtoList.add(enumDto);
            }
        }else{
            // 不支持
        }

        return enumDtoList;
    }

    /**
     * 获取iotdb数据类型
     * @return
     */
    public List<EnumDto> getIotDataType() {
        List<EnumDto> enumDtoList = new ArrayList<>();
        IotdbDataType[] values = IotdbDataType.values();
        for (IotdbDataType iotdbDataType: values) {
            EnumDto enumDto = new EnumDto();
            enumDto.setCode(iotdbDataType.getCode());
            enumDto.setName(iotdbDataType.getDescp());
            enumDtoList.add(enumDto);
        }
        return enumDtoList;
    }

}